package cn.tiger.pojo.domain;

import lombok.Data;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;

import jakarta.persistence.*;
import java.time.LocalDateTime;

/**
 * 消息实体类
 * 
 * 对应数据库表message，存储对话中的所有消息内容
 * 使用JPA注解进行对象关系映射，支持用户消息和AI回复的存储与管理
 * 支持多种消息类型和富文本内容
 * 
 * @author AI Backend Team
 * @version 1.0
 * @since 2025-09-26
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "message")
public class Message {
    /**
     * 消息唯一标识
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    /**
     * 所属对话ID（外键）
     */
    @Column(name = "conversation_id", nullable = false)
    private Long conversationId;

    /**
     * 发送者类型（user-用户，system-系统）
     */
    @Column(name = "sender_type", length = 20)
    private String senderType;

    /**
     * 消息内容（支持富文本JSON）
     */
    @Column(name = "content", columnDefinition = "TEXT")
    private String content;

    /**
     * 发送时间
     */
    @Column(name = "send_time")
    private LocalDateTime sendTime;

    /**
     * 消息类型（TEXT-文本，CODE-代码块，MIX-混合内容）
     */
    @Column(name = "message_type", length = 20)
    private String messageType;

    /**
     * 状态（1-已发送，2-已读，0-失败）
     */
    @Column(name = "status")
    private Byte status;
}